import axios from 'axios'

/**
 * 上传商家图片
 * @param {File} file - 要上传的图片文件
 * @returns {Promise} - axios请求Promise
 */
export function uploadMerchantImage(file) {
  const formData = new FormData()
  formData.append('file', file)
  return axios.post('/api/upload/merchant', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 上传食品图片
 * @param {File} file - 要上传的图片文件
 * @returns {Promise} - axios请求Promise
 */
export function uploadFoodImage(file) {
  const formData = new FormData()
  formData.append('file', file)
  return axios.post('/api/upload/food', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 上传用户头像
 * @param {File} file - 要上传的图片文件
 * @returns {Promise} - axios请求Promise
 */
export function uploadAvatar(file) {
  const formData = new FormData()
  formData.append('file', file)
  return axios.post('/api/upload/avatar', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 上传评论图片
 * @param {File} file - 要上传的图片文件
 * @returns {Promise} - axios请求Promise
 */
export function uploadReviewImage(file) {
  const formData = new FormData()
  formData.append('file', file)
  return axios.post('/api/upload/review', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 通用文件上传
 * @param {File} file - 要上传的文件
 * @param {String} type - 文件类型，可选值：merchant、food、avatar、review、common(默认)
 * @returns {Promise} - axios请求Promise
 */
export function uploadCommonFile(file, type = 'common') {
  const formData = new FormData()
  formData.append('file', file)
  formData.append('type', type)
  return axios.post('/api/upload/common', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 批量上传文件
 * @param {Array<File>} files - 要上传的文件数组
 * @param {String} type - 文件类型，可选值：merchant、food、avatar、review、common(默认)
 * @returns {Promise} - axios请求Promise
 */
export function uploadBatchFiles(files, type = 'common') {
  const formData = new FormData()
  files.forEach(file => {
    formData.append('files', file)
  })
  formData.append('type', type)
  return axios.post('/api/upload/batch', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 自定义路径上传文件
 * @param {File} file - 要上传的文件
 * @param {String} path - 自定义路径（相对于基础上传路径）
 * @returns {Promise} - axios请求Promise
 */
export function uploadToCustomPath(file, path) {
  const formData = new FormData()
  formData.append('file', file)
  formData.append('path', path)
  return axios.post('/api/upload/custom', formData, {
    headers: {
      'Content-Type': 'multipart/form-data'
    }
  })
}

/**
 * 删除文件
 * @param {String} filePath - 文件相对路径
 * @param {String} type - 文件类型，可选值：merchant、food、avatar、review、common(默认)
 * @returns {Promise} - axios请求Promise
 */
export function deleteFile(filePath, type = 'common') {
  return axios.delete(`/api/upload?filePath=${encodeURIComponent(filePath)}&type=${type}`)
}

/**
 * 获取文件访问URL
 * @param {String} type - 文件类型，可选值：merchant、food、avatar、review、common、custom
 * @param {String} path - 文件相对路径
 * @returns {String} - 文件完整访问URL
 */
export function getFileUrl(type, path) {
  return `/api/file/${type}/${path}`
} 